package com.shlh.saas.entity.facebook;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * Facebook用户实体类
 * 对应facebook_db库中的data_0到data_199分片表
 * 分片策略：使用id字段的hashCode对200取余
 */
@Data
@TableName("facebook_users")  // 逻辑表名，ShardingSphere会自动路由到data_${0..199}
public class FacebookUser {

    /**
     * 主键，也是分片键
     */
    @TableId(value = "id", type = IdType.NONE)
    private String id;

    /**
     * 电话号码
     */
    @TableField("phone_number")
    private String phoneNumber;

    /**
     * Facebook ID
     */
    @TableField("uid")
    private String facebookId;
    
    /**
     * 用户名字
     */
    @TableField("first_name")
    private String firstName;
    
    /**
     * 用户姓氏
     */
    @TableField("last_name")
    private String lastName;
    
    /**
     * 用户性别
     */
    @TableField("gender")
    private String gender;
    
    /**
     * 当前所在地
     */
    @TableField("birth_place")
    private String currentLocation;
    
    /**
     * 家乡
     */
    @TableField("workplace_city")
    private String hometown;
    
    /**
     * 关系状态
     */
    @TableField("marital_status")
    private String relationshipStatus;
    
    /**
     * 工作地点
     */
    @TableField("work_place")
    private String workplace;
    
    /**
     * 日期（出生日期）
     */
    @TableField("birth_date")
    private String date;

    /**
     * 创建时间（用于导出排序）
     */
    @TableField(exist = false)
    private Date createdAt;

    /**
     * 入职日期
     */
    @TableField("join_date")
    private String joinDate;

    /**
     * 用户电子邮箱
     */
    @TableField("email")
    private String email;

    // 以下是不在数据库中但在导出中可能需要的字段

    /**
     * 全名（用于前端显示）
     */
    @TableField(exist = false)
    private String fullName;

    /**
     * MySQL表名（用于数据源标识）
     */
    @TableField(exist = false)
    private String mysqlTable;

    /**
     * 用户头像URL
     */
    @TableField(exist = false)
    private String profilePictureUrl;

    /**
     * 用户简介
     */
    @TableField(exist = false)
    private String bio;

    /**
     * 是否已验证
     */
    @TableField(exist = false)
    private Boolean verified;

    /**
     * 朋友数量
     */
    @TableField(exist = false)
    private Integer friendsCount;

    /**
     * 关注者数量
     */
    @TableField(exist = false)
    private Integer followersCount;

    /**
     * 帖子数量
     */
    @TableField(exist = false)
    private Integer postsCount;

    /**
     * 最后活跃时间
     */
    @TableField(exist = false)
    private Date lastActiveTime;

    /**
     * 注册时间
     */
    @TableField(exist = false)
    private Date registrationTime;

    /**
     * 获取格式化的全名
     * 如果 fullName 不为空则返回 fullName，否则拼接 firstName 和 lastName
     */
    public String getFullName() {
        if (fullName != null && !fullName.trim().isEmpty()) {
            return fullName;
        }

        StringBuilder sb = new StringBuilder();
        if (firstName != null && !firstName.trim().isEmpty()) {
            sb.append(firstName);
        }
        if (lastName != null && !lastName.trim().isEmpty()) {
            if (sb.length() > 0) {
                sb.append(" ");
            }
            sb.append(lastName);
        }
        return sb.toString();
    }
} 